<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
	{
		// 1- then函数是原型对象下的方法
        // 2- then函数接收两个参数，类型都是函数（第一个函数称为成功回调函数（onResolved）,第二个回调函数称为失败回调函数（onRejected））
		// const p = new Promise(function(resolve,reject){
        //     resolve(100);
		// 	reject(200);
        // });
		// p.then(function(value){
		// 	console.log("成功回调，当p的状态为成功时执行,接收的参数是成功值",value)
        // },function(reason){
		// 	console.log("失败回调，当p的状态为失败时执行,接收的参数是失败值",reason)
        // })
    }
	{
		// 3- then函数返回的是一个新Promise实例
        // 返回的Promise实例的状态和值受成功或失败回调函数的返回值的影响。
        // 如果成功回调与失败回调未执行，则返回的状态为pending,值为undefined
        // 如果回调函数返回的是一个非Promise实例，那么p1状态为成功fulfilled，值为回调函数返回值
        // 如果回调函数返回的是一个Promise实例，那么p1状态和值与返回的Promise实例相同。
        // 如果回调函数中有异常，那么p1的状态为失败，值为异常信息
		const p = new Promise(function(resolve,reject){
		    resolve(100);
			reject(200);
		});
		const p2 = new Promise(resolve=>{
			resolve(20);
        })
		const p1 = p.then(value=>{
			// console.log("成功回调，当p的状态为成功时执行,接收的参数是成功值",value);
            // return 2000;
            // return new Promise((resolve,reject)=>{
			// 	resolve(200);
            // })
            // throw "异常"
            return p2;
		},reason=>{
			// console.log("失败回调，当p的状态为失败时执行,接收的参数是失败值",reason)
            // return 1000;
            return new Promise((resolve, reject)=>{
				reject(11);
            })
		});
		console.log(p1 === p2);
    }
</script>
</html>